home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / Ant Movie Catalog 3.5.0.2 / amc_install.exe / {app} / Scripts / MovieGoods.ifs < prev    next >
Text File  |  2005-03-28  |  4KB  |  153 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=KaraGarga
  8. Title=MovieGoods
  9. Description=Import big movie poster from moviegoods.com
  10. Site=moviegoods.com
  11. Language=EN
  12. Version=0.2
  13. Requires=3.5.0
  14. Comments=
  15. License=Made for Ant Movie Catalog and can be distributed freely...
  16. GetInfo=1
  17.  
  18. [Options]
  19.  
  20. ***************************************************)
  21.  
  22. program MOVIEGOODS;
  23.  
  24. var
  25.   MovieName: string;
  26.   MovieURL: string;
  27.   ImageURL: string;
  28.   ImageName: string;
  29. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  30. var
  31.   i: Integer;
  32. begin
  33.   Result := -1;
  34.   if StartAt < 0 then
  35.     StartAt := 0;
  36.   for i := StartAt to List.Count-1 do
  37.     if Pos(Pattern, List.GetString(i)) <> 0 then
  38.     begin
  39.       Result := i;
  40.       Break;
  41.     end;
  42. end;
  43.  
  44. procedure CutAfter(var Str: string; Pattern: string);
  45. begin
  46.   Str := Copy(str, Pos(Pattern, Str) + Length(Pattern), Length(Str));
  47. end;
  48. procedure CutBefore(var Str: string; Pattern: string);
  49. begin
  50.   Str := Copy(Str, Pos(Pattern, Str), Length(Str));
  51. end;
  52.  
  53. function GetStringFromHTML(Page, StartTag, CutTag, EndTag: string): string;
  54. begin
  55.   Result := '';
  56.   if Pos(StartTag, Page) > 0 then begin
  57.     CutBefore(Page, StartTag);
  58.     if Length(CutTag) > 0 then
  59.       CutAfter(Page, CutTag);
  60.     Result := Copy(Page, 0, Pos(EndTag, Page) - 1);
  61.     HTMLDecode(Result);
  62.   end;
  63. end;
  64.  
  65.  
  66. procedure AnalyzePage(Address: string);
  67. var
  68.   Page: TStringList;
  69. begin
  70.   Page := TStringList.Create;
  71.   Page.Text := GetPage(Address);
  72.   if pos('<TD VALIGN="top" ALIGN="center" width="120">', Page.Text) = 0 then
  73.   begin
  74.     ShowMessage('Sorry no cover available!');
  75.   end else
  76.   begin
  77.       PickTreeClear;
  78.       PickTreeAdd('Search results', '');
  79.       AddMoviesTitles(Page);
  80.     if PickTreeExec(Address) then
  81.       AnalyzePage2(Address);
  82.   end;
  83.   Page.Free;
  84. end;
  85.  
  86. procedure AnalyzePage2(Address: string);
  87. var
  88.   Page: TStringList;
  89. begin
  90.   Page := TStringList.Create;
  91.   Page.Text := GetPage(Address);
  92.   begin
  93.       PickTreeClear;
  94.       PickTreeAdd('Search results', '');
  95.       AddMoviesTitles2(Page);
  96.     if PickTreeExec(Address) then
  97.     GetPicture (Address);
  98.   end;
  99.   Page.Free;
  100. end;
  101.  
  102. procedure AddMoviesTitles(ResultsPage: TStringList);
  103. var
  104.   Page: string;
  105.   MovieTitle, MovieAddress: string;
  106. begin
  107.   Page := ResultsPage.Text;
  108.   while Pos('<TD VALIGN="top" ALIGN="center" width="120">', Page) > 0 do
  109.   begin
  110.     CutBefore(Page, '<TD VALIGN="top" ALIGN="center" width="120">');
  111.     MovieAddress := GetStringFromHTML(Page, 'width="120"><A HREF="', 'HREF="', '"');
  112.     MovieTitle := GetStringFromHTML(Page, 'ALT="', '"', '">');
  113.     ImageURL:= 'http://www.moviegoods.com/Assets/product_images/1000/'+GetStringFromHTML(Page, 'width="120"><img SRC="', 'SRC="', '"');
  114.     CutAfter(Page, '</A>');
  115.     MovieAddress := StringReplace(MovieAddress, '1000.A', '1020.A');
  116.     HTMLRemoveTags(MovieTitle);
  117.     PickTreeAdd(MovieTitle, MovieAddress+ImageURL);
  118.   end;
  119. end;
  120.  
  121. procedure AddMoviesTitles2(ResultsPage: TStringList);
  122. var
  123.   Page: string;
  124.   MovieTitle, MovieAddress: string;
  125. begin
  126.   Page := ResultsPage.Text;
  127.   while Pos('<INPUT TYPE="HIDDEN" NAME="DSP_IMAGE" VALUE="', Page) > 0 do
  128.   begin
  129.     CutBefore(Page, '<INPUT TYPE="HIDDEN" NAME="DSP_IMAGE" VALUE="');
  130.     MovieAddress := 'http://www.moviegoods.com/Assets/product_images/1000/'+GetStringFromHTML(Page, '<INPUT TYPE="HIDDEN" NAME="DSP_IMAGE" VALUE="', 'UE="', '">');
  131.     MovieTitle := GetStringFromHTML(Page, 'border=2 ALT=', '"', '></A>');
  132.     MovieAddress := StringReplace(MovieAddress, '1000.A', '1020.A');
  133.     CutAfter(Page, '">');
  134.     HTMLRemoveTags(MovieTitle);
  135.     PickTreeAdd(MovieTitle, MovieAddress);
  136.   end;
  137. end;
  138.  
  139. begin
  140.   if CheckVersion(3,5,0) then
  141.   begin
  142.     MovieName := GetField(fieldOriginalTitle);
  143.     if MovieName = '' then
  144.       MovieName := GetField(fieldTranslatedTitle);
  145.     if Input('MovieGoods Poster Import 0.2', 'Please enter English title:', MovieName) then
  146.     begin
  147.       AnalyzePage('http://www.moviegoods.com/search2.asp?find_spec='+UrlEncode(MovieName)+'&Go2.x=0&Go2.y=0&Go2=Go');
  148.     end;
  149.   end
  150.   else
  151.     ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
  152. end.
  153.